package com.shujia.wyh.day11;

/*
    递归:方法定义的时候内部调用方法自身的现象
    Math.max(Max(10,200),28);  方法的嵌套调用
    stringBuffer.append().append(); 方法的链式调用

    举例:
        1. 从前有座山,山里有座庙,庙里有一个老和尚,老和尚在给小和尚讲故事:
             从前有座山,山里有座庙,庙里有一个老和尚,老和尚在给小和尚讲故事:
                从前有座山,山里有座庙,庙里有一个老和尚,老和尚在给小和尚讲故事:
                    从前有座山,山里有座庙,庙里有一个老和尚,老和尚在给小和尚讲故事:
                    ...
            结束的情况: 老和尚圆寂了.山倒了..

        2. 学习大数据,为了挣钱,为了娶媳妇,生娃,来数加学大数据:
            学习大数据,为了挣钱,为了娶媳妇,生娃,来数加学大数据:
              学习大数据,为了挣钱,为了娶媳妇,生娃,来数加学大数据
                ....

            结束的情况: 娶不到媳妇,生不了娃...

 */


public class DiGuiDemo1 {
    public static void main(String[] args) {
        //求5的阶乘
        long result = fun(5);
        System.out.println(result);

    }

    /*
        递归的第一个条件: 要有出口,结束条件
        递归的第二个条件: 方法自己调用自己

        递归的层次不要太多,内存可能不够
     */
    public static long fun(long number) {
        if (number == 1L) {
            return 1L;
        } else {
            return number * fun(--number);
        }
    }
}
